/**
 * 03-商品-商品分类 <br/>
 *
 * @author fsl gongl 20151123.
 */
(function ($) {
    'use strict';

    $(function () {

        initPage();

        bindEvent();

        // 初始化，获取第一页数据.
        getCategoryList(1);

    });

    /**
     * 在页面初始化时, 绑定事件.<br/>
     *
     * @author fsl-gonglong-20151125.
     */
    function bindEvent() {

        var $listContext = $("#good-classify-context");

        $listContext.on("click", ".sel-del-btn", function () {
            
            var that = this;
            
            var del_url = $(this).attr("href");
            
            var conf = {
                title : "来自网页的消息",
                message : "删除后不可恢复，确定删除吗?",
                ok_func : delGoodClassify,
                ok_context : that,
                ok_param : del_url
            };
            adminUtil.showConfDialog(conf);

        });

        // sel-fold
        $listContext.on("click", ".sel-fold", function () {

            var iconSpan = $(this).find("span");
            var isFold = iconSpan.hasClass("icon-minus");
            var $childrenList = $listContext.find("tr[data-parent-id=" +
                    $(this).attr("data-id") + "]");

            if (!isFold) {

                $childrenList.show();

            } else {
                $childrenList.hide();
            }
            iconSpan.toggleClass("icon-minus");
        });

    };

    /**
     * 初始化页面.<br/>
     *
     * @author fsl-gonglong-20151125.
     */
    function initPage() {

        // 新增.
        $("#new-classify-btn").attr("href", PAGE_DATA.REST_API.new_goods_classify || '');

    };

    /**
     * 获取[商品分类]列表数据.<br/>
     *
     * @param page {int} 查询页码.
     *
     * @author fsl-gonglong-20151125.
     */
    function getCategoryList(page) {

        $.ajax({
            url : PAGE_DATA.REST_API.get_goods_classify_list || '',
            type : "get",
            data : {
                page : parseInt(page || 0),
                pageSize : 10,
            },
            success : function (result) {
                renderList(result);
            },
            error : function (status, result) {
                var conf = {
                    title : "提示",
                    message : "获取数据失败!",
                    ok_txt : "确定"
                };
                adminUtil.showMsg(conf);
            }
        });
    };

    /**
     * 渲染列表数据, 翻页.
     *
     * @param ajaxResult {object} ajax请求返回的数据对象.
     *
     * @author fsl-gonglong-20151125
     */
    function renderList(ajaxResult) {

        var onClickObj = {
            onClick : function () {
                var clickPage = $(this).attr("data-page");
                getCategoryList(parseInt(clickPage));
            }
        };

        var dataList = $.extend([], ajaxResult.data);

        // 表格数据模板.
        var tmplObj = _.template($("#tbl-list-templ").html());

        var dataHtml = tmplObj(dataList);
        $("#good-classify-context").html(dataHtml);
        
        // 翻页.
        var defaultPagingObj = {
            total : 0,
            pageSize : 0,
            page : 0
        };

        var pagingConf = $.extend(defaultPagingObj, ajaxResult.pagingConfData, onClickObj);

        adminUtil.initPaging('#comm-paging', pagingConf);

    };

    /**
     * 删除商品分类(单条记录). <br/>
     *
     * @author fsl-gonglong-20151126
     */
    function delGoodClassify(restApi) {
        $.ajax({
            url : restApi || '',
            type : "delete",
            data : {
                _token : COMM_DATA.csrfToken
            },
            success : function (result) {
                renderList(result);
            },
            error : function (status, result) {
                
                var tmpErrorMsg = "";
                if (typeof result.responseJSON != 'undefined' 
                        && typeof result.responseJSON.data != 'undefined') {
                    tmpErrorMsg = result.responseJSON.data;
                }
                
                var conf = {
                    title : "提示",
                    message : tmpErrorMsg || "删除数据失败!",
                    ok_txt : "确定"
                };
                adminUtil.showMsg(conf);
            }
        })
    };
})(jQuery);